package 剑指offer;

public class p28对称的二叉树 {
    public boolean isSymmetric(TreeNode root) {
        if (root==null) {
            return true;
        }

        return isChildSymmetrical(root.left,root.right);
    }

    private boolean isChildSymmetrical(TreeNode left, TreeNode right) {
        if (left==null && right==null) return true;

        if (left==null || right==null) return false;//左右子树只有一个为空，那么肯定不对称

        if (left.val != right.val) return false;

        return isChildSymmetrical(left.left,right.right) && isChildSymmetrical(left.right,right.left);
        //左树的左子树 和 右树的右子树 对称 && 左树的右子树 和 右树的左子树 对称
    }
}
